home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_gwu / color.c < prev    next >
C/C++ Source or Header  |  1996-01-30  |  5KB  |  173 lines

  1. /*
  2.     GWAda Development Environment for 386/486 PCs   
  3.     Copyright (C) 1993, Arthur Vargas Lopes  & Michael Bliss Feldman
  4.                         vlopes@vortex.ufrgs.br mfeldman@seas.gwu.edu
  5.  
  6.     This program is free software; you can redistribute it and/or modify
  7.     it under the terms of the GNU General Public License as published by
  8.     the Free Software Foundation; version 2 of the License.    
  9.  
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU General Public License
  16.     along with this program; if not, write to the Free Software
  17.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. */
  19.  
  20. /*  Color.c  */
  21.  
  22. #include "externs.h"
  23.  
  24.  
  25. void AVL_RESET_COLORS()
  26. {
  27.     avl_txt_color = AVL_TEXT_COLOR;
  28.     avl_txt_bk_color = AVL_TEXT_BK_COLOR;
  29.     avl_wnd_color = AVL_WIND_COLOR;
  30.     avl_wnd_title = AVL_WIND_TITLE;
  31.     avl_wnd_bk_color = AVL_WIND_BK_COLOR;
  32.     avl_que_color = AVL_QUES_COLOR;
  33.     avl_que_bk_color = AVL_QUES_BK_COLOR;
  34.     avl_pro_color = AVL_PROM_COLOR;
  35.     avl_pro_bk_color = AVL_PROM_BK_COLOR;
  36.     avl_men_ready = AVL_MENU_READY;
  37.     avl_men_letter = AVL_MENU_LETTER;
  38.     avl_men_word = AVL_MENU_WORD;
  39.     avl_men_bk_color = AVL_MENU_BK_COLOR;
  40.     avl_err_color = AVL_ERRO_COLOR;
  41.     avl_sta_color = AVL_STAT_COLOR;
  42.     avl_sta_bk_color = AVL_STAT_BK_COLOR;
  43.     avl_msg_color = AVL_MESG_COLOR;
  44.     avl_msg_bk_color = AVL_MESG_BK_COLOR;
  45. }
  46.  
  47. void AVL_SHOW_COLORS_WHERE()
  48. {
  49.     int i, j, n;
  50.     char cor[2];
  51.     sprintf(cor,"%c",16);
  52.     for(i = 0; i < AVL_NO_COLORS_OPTS; ++i)  {
  53.         if (avl_cor_choices[i].isbk)  {
  54.             _setbkcolor(*avl_cor_choices[i].who);
  55.             _settextcolor(avl_men_word);
  56.             }
  57.         else {
  58.             _setbkcolor(avl_men_bk_color);
  59.             _settextcolor(*avl_cor_choices[i].who);
  60.             }
  61.         _settextposition(i + 1, 2);
  62.         _outtext(avl_cor_choices[i].where);
  63.         _setbkcolor(avl_men_bk_color);
  64.         _settextcolor(avl_men_word);
  65.         _settextposition(i + 1, 1);
  66.         _outtext(" ");
  67.         }
  68.     _settextposition(avl_cor_select+1,1);
  69.     _settextcolor(4);
  70.     _outtext(cor);
  71. }
  72.         
  73.  
  74. void AVL_SHOW_COLORS()
  75. {
  76.     int i, j;
  77.     long bk;
  78.     short co;
  79.     char cor[2];
  80.     co = _gettextcolor();
  81.     bk = _getbkcolor();
  82.     _setbkcolor(7);
  83.     strcpy(cor," ");
  84.     for(i = 0; i < AVL_MAX_COLORS; ++i)  {
  85.         _settextposition(9,i+2);
  86.         _outtext(cor);
  87.         }
  88.     sprintf(cor,"%c",3);
  89.     for(i = 0; i < 8; ++i)  {
  90.         _setbkcolor(i);
  91.         for(j = 0; j < AVL_MAX_COLORS; ++j) {
  92.             _settextposition(i+1,j + 2);
  93.             _settextcolor(j);
  94.             _outtext(cor);
  95.             }
  96.         }
  97.     _settextcolor(4);
  98.     _settextposition(avl_cor_bk_sel+2,avl_cor_txt_sel+2);
  99.     sprintf(cor,"%c",24);
  100.     _outtext(cor);
  101.     _settextcolor(co);
  102.     _setbkcolor(bk);
  103. }
  104.  
  105. void AVL_SET_COLORS()
  106. {
  107.     int i, ch;
  108.     short c1;
  109.     AVL_WIN_PTR w, w2;
  110.     AVL_SHOW_MENU();
  111.     c1 = avl_menu[avl_cur_menu].c - 1;
  112.     w = AVL_MAKE_WINDOW("",3,c1,3+AVL_NO_COLORS_OPTS+1,22+c1,avl_men_bk_color,avl_wnd_color);
  113.     while ( 1 )  {
  114.         AVL_SHOW_COLORS_WHERE();
  115.         ch = getch();
  116.         if (ch == 27)  {
  117.             AVL_DEL_WINDOW(w);
  118.             return;
  119.             }
  120.         if (ch == 13) {
  121.             w2 = AVL_MAKE_WINDOW("",5,c1+6,8+7,AVL_MAX_COLORS+c1+10,avl_men_bk_color,avl_wnd_color);
  122.             while ( 1 )  {
  123.                 AVL_SHOW_COLORS();
  124.                 ch = getch();
  125.                 if (ch == 27) {
  126.                     AVL_DEL_WINDOW(w2);
  127.                     break;
  128.                     }
  129.                 if (ch == 13)  {
  130.                     if (avl_cor_choices[avl_cor_select].isbk)
  131.                         *avl_cor_choices[avl_cor_select].who = avl_cor_bk_sel;
  132.                     else
  133.                         *avl_cor_choices[avl_cor_select].who = avl_cor_txt_sel;
  134.                     AVL_DEL_WINDOW(w2);
  135.                     break;
  136.                     }
  137.                 if ((ch == 0 || ch == 0xE0)) {
  138.                     ch = getch();
  139.                     switch(ch)  {
  140.                         case 72 : /* Up  */ 
  141.                             if (--avl_cor_bk_sel < 0) avl_cor_bk_sel = 7;
  142.                             break;
  143.                         case 80 : /* Down */ 
  144.                             if (++avl_cor_bk_sel > 7) avl_cor_bk_sel = 0;
  145.                             break;
  146.                         case 75 : /* Left */ 
  147.                             if (--avl_cor_txt_sel < 0) avl_cor_txt_sel = 15;
  148.                             break;
  149.                         case 77 : /* Right */ 
  150.                             if (++avl_cor_txt_sel > 15) avl_cor_txt_sel = 0;
  151.                             break;
  152.                         default : putch(7); break;
  153.                         }
  154.                     }
  155.                 else
  156.                     putch(7);
  157.                 }
  158.             } /* if (ch == 13)  */
  159.         if ((ch == 0 || ch == 0xE0)) {
  160.             ch = getch();
  161.             switch(ch)  {
  162.                 case 72 : /* Up  */ 
  163.                     if (--avl_cor_select < 0) avl_cor_select = (AVL_NO_COLORS_OPTS - 1);
  164.                     break;
  165.                 case 80 : /* Down */ 
  166.                     if (++avl_cor_select > (AVL_NO_COLORS_OPTS - 1)) avl_cor_select = 0;
  167.                     break;
  168.                 default : putch(7); break;
  169.                 }
  170.             }
  171.         }    
  172. }
  173.